Adding some more judges, here and there.
[and.git] / lib / Mi manual de algoritmos / version_world_finals_2009 / src / geometria / distance_point_to_segment.cpp
blob3dc71a10cf635c7dba1531c1a8538b4988ce5fdd
1 /*
2 Returns the closest distance between point pnt and the segment
3 that goes from point a to b
4 Idea by:
5 http://local.wasp.uwa.edu.au/~pbourke/geometry/pointline/
6 */
7 double distance_point_to_segment(const point &a,const point &b,
8 const point &pnt){
9 double u =
10 ((pnt.x - a.x)*(b.x - a.x) + (pnt.y - a.y)*(b.y - a.y))
11 /distsqr(a, b);
12 point intersection;
13 intersection.x = a.x + u*(b.x - a.x);
14 intersection.y = a.y + u*(b.y - a.y);
15 if (u < 0.0 || u > 1.0){
16 return min(dist(a, pnt), dist(b, pnt));
18 return dist(pnt, intersection);